home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 2109 / 2109.xpi / chrome / febe.jar / content / febeOptions.js < prev    next >
Text File  |  2009-10-31  |  20KB  |  565 lines

  1. // author: Chuck Baker
  2. // contact: febe@customsoftwareconsult.com
  3. // Version 6.3
  4.     
  5.     window.addEventListener("load",febeBuProfileCheck,true);
  6.  
  7. function febeBuSelectAll(bool) {
  8.     var box = document.getElementById("buItems");
  9.     var checkboxes = box.getElementsByTagName("checkbox");
  10.     for(i=0; i<checkboxes.length; i++){
  11.         if(!checkboxes[i].disabled){
  12.             checkboxes[i].setAttribute("checked",bool);
  13.             var id = checkboxes[i].id;    // The ID is the same as the preference name.  Clever, eh?
  14.             var prefname = id.replace(/_/g,".");
  15.             febePrefs.setBoolPref(prefname,bool);
  16.         }//if
  17.     }//for
  18.     febeBuProfileCheck();
  19.     return true;
  20. }//febeBuSelectAll()
  21.  
  22. function febeBuProfileCheck(){
  23.     febeSetMsgs();
  24.     try{      
  25.         var buType = febePrefs.getCharPref("extensions.febe.buType");
  26.  
  27.         if(buType == "profile"){  // Disable options if profile backup is checked
  28.             document.getElementById("buExtensions_id").setAttribute("disabled",true);
  29.             document.getElementById("buThemes_id").setAttribute("disabled",true);
  30.             document.getElementById("additionalItemsID").setAttribute("disabled",true);
  31.         } else {
  32.             document.getElementById("buExtensions_id").setAttribute("disabled",false);
  33.             document.getElementById("buThemes_id").setAttribute("disabled",false);
  34.             document.getElementById("additionalItemsID").setAttribute("disabled",false);
  35.             febeOptionsCheck();
  36.         }//if
  37.     }catch(e){;}
  38.     window.removeEventListener("load",febeBuProfileCheck,true);
  39.     return true;
  40. }//febeBuProfileCheck()    
  41.  
  42. function febeSelExt(){
  43.   // Select extensions to backup
  44.     var w = "chrome://febe/content/febeSelExt.xul";
  45.     window.open(w, "FEBE Select Extensions", "chrome,alwaysRaised,centerscreen,resizable");
  46. }//febeSelExt()
  47.  
  48. function febeSelTheme(){
  49.   // Select extensions to backup
  50.     var w = "chrome://febe/content/febeSelTheme.xul";
  51.     window.open(w, "FEBE Select Themes", "chrome,alwaysRaised,centerscreen,resizable");
  52. }//febeSelTheme()
  53.  
  54. function febeSelBUDestDir(){
  55.   // Select backup destinaton directory
  56.     const nsIFilePicker = Ci.nsIFilePicker;
  57.     var fp = Cc["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  58.     fp.init(window, febeMsg[5], nsIFilePicker.modeGetFolder);
  59.     fp.appendFilters(nsIFilePicker.filterAll | nsIFilePicker.filterText);
  60.  
  61.     // Set default directory to current backup directory
  62.     if(febePrefs.prefHasUserValue("extensions.febe.extBUdir")){
  63.         extBUdir = febeGetUnicharPref("extensions.febe.extBUdir");
  64.         if(extBUdir != ""){
  65.             var dd = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
  66.             dd.initWithPath(extBUdir);
  67.             fp.displayDirectory = dd;
  68.         }//if
  69.     }//if
  70.     var rv = fp.show();
  71.     if (rv == nsIFilePicker.returnOK){
  72.         rv = fp.file;
  73.         extBUdir = rv.path;
  74.         febeSetUnicharPref("extensions.febe.extBUdir", extBUdir);
  75.         document.getElementById("DestDirID").value = extBUdir;
  76.         var d = document.getElementById("DestDirID");
  77.         d.setAttribute("value",extBUdir);
  78.     }//if
  79.     febeCheckBuDestDir();
  80.     return true;
  81. }//febeSelBUDestDir()
  82.  
  83. function febeSetStatusbarVisibility(){
  84.     febeHideIcons = document.getElementById("hideIcons_id").checked;
  85.     var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
  86.     var enumerator = wm.getEnumerator("navigator:browser");
  87.     while(enumerator.hasMoreElements()) {
  88.         var win = enumerator.getNext();
  89.         var d = win.document.getElementById("febestatusbar");
  90.         if(!Boolean(d)){return false;}
  91.         if(win.febeIsScheduleController){
  92.             d.hidden = d.collapsed = febeHideIcons;
  93.         }else{
  94.             d.hidden = d.collapsed = true;
  95.         }//if
  96.     }//while
  97.     febeSetStatus();
  98.     return true;
  99. }//febeInvert()
  100.  
  101. function febeClearPrefs(){
  102.     var tmp = febeMsg[126]+"\n"+febeMsg[127]+"\n\n";
  103.     var style = "<style>color: red; font-weight: bold; font-size: 15px;</style>";
  104.     tmp += style+febeMsg[183]+"\n\n";
  105.     tmp += febeMsg[128]
  106.     var ok = febeConfirm(tmp);
  107.     if(!ok){return false;}
  108.     try {
  109.         var prefCount = {value:0}; 
  110.         var prefService = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService); 
  111.         var prefBranch = prefService.getBranch(null); 
  112.         var prefArray = prefBranch.getChildList("extensions.febe." , prefCount); 
  113.         var nsIPrefBranch = Ci.nsIPrefBranch;  
  114.         for (i = 0; i < prefCount.value; i++){
  115.             if(prefBranch.prefHasUserValue(prefArray[i])){prefBranch.clearUserPref(prefArray[i]);}
  116.         }
  117.         prefBranch.deleteBranch("extensions.febe.");
  118.         
  119.         // delete the destination file if it exists
  120.         var febeDataFile = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("ProfD", Ci.nsIFile);
  121.         febeDataFile.append(FEBEDATAFILE);
  122.         if(febeDataFile.exists()){febeDataFile.remove(false);}
  123.     }catch (e) {
  124.         alert(e);
  125.         return false;
  126.     }
  127.     var version = getFebeVersion();
  128.     var prefName = "extensions.febe.previousversion";
  129.     febePrefs.setCharPref(prefName,version);
  130.     alert(febeMsg[129]);
  131.     febeRestartFx();
  132.     return true;
  133. }//febeClearPrefs()
  134.  
  135. function febeViewBuDir(){
  136.     var febeBuDestDir = document.getElementById("DestDirID").value;
  137.     febeOpenLink("file:///"+febeBuDestDir);
  138.     return true;
  139. }//febeViewBuDir()
  140.  
  141. function febeViewInstallDir(){
  142.     var febeInstallDir = document.getElementById("febeInstallPath").value;
  143.     febeOpenLink("file:///"+febeInstallDir);
  144.     return true;
  145. }//febeViewInstallDir()
  146.  
  147. function febeCheckBuDestDir(){
  148.     if(document.getElementById("DestDirID") && document.getElementById("DestDirID").value != ""){
  149.         document.getElementById("febeviewbudirbtnID").disabled = false;
  150.     }else{
  151.         document.getElementById("febeviewbudirbtnID").disabled = true;
  152.     }//if
  153.     return true;
  154. }//febeCheckBuDestDir()
  155.  
  156. function febeDisableOpts(){
  157.     try{    // Use a try blocks because statements refer to different preference windows which may not be loaded
  158.         document.getElementById("clearwarn_id").disabled = !document.getElementById("clearDestDir_id").checked;
  159.     }catch(e){;}
  160.     try{
  161.         document.getElementById("maxBuDirsLabelID").disabled = !document.getElementById("useTimestampedDir_id").checked;
  162.     }catch(e){;}
  163.     try{
  164.         document.getElementById("maxBuDirsID").disabled = !document.getElementById("useTimestampedDir_id").checked;
  165.     }catch(e){;}
  166.     try{
  167.         document.getElementById("febeTimestampFormatLabelID").disabled = !document.getElementById("useTimestampedDir_id").checked;
  168.     }catch(e){;}
  169.     try{
  170.         document.getElementById("febeTimestampFormat1ID").disabled = !document.getElementById("useTimestampedDir_id").checked;
  171.     }catch(e){;}
  172.     try{
  173.         document.getElementById("febeTimestampFormat2ID").disabled = !document.getElementById("useTimestampedDir_id").checked;
  174.     }catch(e){;}
  175.     try{
  176.         document.getElementById("febeclearbuinprogresstbtn").disabled = !febeBuInProgress();
  177.     }catch(e){;}
  178.     febePlatform = febeGetPlatform();
  179.     return true;
  180. }//febeDisableOpts()
  181.  
  182. function febeCloseButtonEtc(){
  183.     febeGetPlatform();
  184.     try{    // Use a try block because statements refer to different preference windows which may not be loaded
  185.       // Show close button for Mac OS X users because they don't get buttons for <prefwindow>
  186.       // Looks like Fx3 doesn't show for *nix either      
  187.         if(febePlatform == 2 || febePlatform == 3){
  188.             document.getElementById("febeMacAcceptBtn").hidden = false;
  189.         }//if
  190.         
  191.         // Set text direction
  192. /*
  193.         var textdir = document.getElementById("febeTextDir").value;
  194.         if(!textdir){textdir = "ltr";}
  195.         var prefName = "extensions.febe.orientation";
  196.         febePrefs.setCharPref(prefName,textdir);
  197. */
  198.         // Fix for Fx 3.7 - no "&locale.dir;" entity
  199.         var prefName = "extensions.febe.orientation";
  200.         var textdir = febePrefs.getCharPref(prefName);
  201.         if(textdir != "ltr" && textdir != "rtl"){febePrefs.setCharPref(prefName,"ltr");}
  202.         
  203.       // Add event listeners
  204.         var d = document.getElementById("febeTimestampFormatID");
  205.         d.addEventListener("RadioStateChange", febeTimestampDirCheck, false);
  206.         
  207.     }catch(e){;}
  208.   // Check for global extensions
  209.     var febeGlobalExtDir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("CurProcD", Ci.nsIFile);
  210.     febeGlobalExtDir.append("extensions");
  211.     if(febeGlobalExtDir.exists()){
  212.         var entries = febeGlobalExtDir.directoryEntries;
  213.         febeGlobalExtCouunt = 0;
  214.         while(entries.hasMoreElements()){
  215.             var entry = entries.getNext();
  216.             entry.QueryInterface(Ci.nsIFile);
  217.             var dirName = entry.leafName;
  218.             if(!entry.isDirectory()){continue;}
  219.             if(dirName == "{972ce4c6-7e08-4474-a285-3208198ce6fd}"){continue;}    // Ignore Fx default tyheme
  220.             febeGlobalExtCouunt++;
  221.         }//while
  222.     }//if
  223.     var d = document.getElementById("includeGlobal_id");
  224.     if(d && febeGlobalExtCouunt == 0){
  225.         d.setAttribute("checked",false);    
  226.         d.setAttribute("disabled",true);
  227.         febePrefs.setBoolPref("extensions.febe.includeGlobal",false);        
  228.     }//if
  229.     return true;
  230. }//febeCloseButtonEtc()
  231.     
  232. function febeOptionsCheck(){
  233.   // Enable/disable options
  234.     // Create pointer to profile directory
  235.     febeProfDir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("ProfD", Ci.nsIFile);
  236.     
  237.     var buType = febePrefs.getCharPref("extensions.febe.buType");
  238.     if(buType == "profile"){return true;}
  239.     
  240.     var tmp = "";   
  241.     // Check userChrome.css
  242.     var d = document.getElementById("extensions_febe_buUserChrome");
  243.     var profileDir = febeProfDir.clone();
  244.     profileDir.append("chrome");
  245.     profileDir.append("userChrome.css");
  246.     if(!profileDir.exists()){
  247.         if(d.checked == true){tmp += d.label + "\n";}
  248.         d.checked = false;
  249.         d.setAttribute("disabled",true);
  250.         var prefName = "extensions.febe.buUserChrome";
  251.         febePrefs.setBoolPref(prefName,false);
  252.     }else{
  253.         d.setAttribute("disabled",false);
  254.     }//if
  255.         
  256.     // Check cookies.txt
  257.     var d = document.getElementById("extensions_febe_buCookies");
  258.     var profileDir = febeProfDir.clone();
  259.     profileDir.append("cookies.sqlite");
  260.     if(!profileDir.exists()){
  261.         if(d.checked == true){tmp += d.label + "\n";}
  262.         d.checked = false;
  263.         d.setAttribute("disabled",true);
  264.         var prefName = "extensions.febe.buCookies";
  265.         febePrefs.setBoolPref(prefName,false);
  266.     }else{
  267.         d.setAttribute("disabled",false);
  268.     }//if
  269.     
  270.     // Check usernames/passwords
  271.     var d = document.getElementById("extensions_febe_buUserPwd");
  272.     var loginManager = Cc["@mozilla.org/login-manager;1"].getService(Ci.nsILoginManager);    
  273.     var logins = loginManager.getAllLogins({});
  274.     if(logins.length < 1){
  275.         if(d.checked == true){tmp += d.label + "\n";}
  276.         d.checked = false;
  277.         d.setAttribute("disabled",true);
  278.         var prefName = "extensions.febe.buUserPwd";
  279.         febePrefs.setBoolPref(prefName,false);
  280.     }else{
  281.         d.setAttribute("disabled",false);
  282.     }//if
  283.         
  284.     // Check searchPlugins
  285.     var d = document.getElementById("extensions_febe_buSearchPlugins");
  286.     var profileDir = febeProfDir.clone();
  287.     profileDir.append("searchplugins");
  288.     if(!profileDir.exists()){
  289.         if(d.checked == true){tmp += d.label + "\n";}
  290.         d.checked = false;
  291.         d.setAttribute("disabled",true);
  292.         var prefName = "extensions.febe.buSearchPlugins";
  293.         febePrefs.setBoolPref(prefName,false);
  294.     }else{
  295.         d.setAttribute("disabled",false);
  296.     }//if
  297.     
  298.     // Check history.dat
  299.     var d = document.getElementById("extensions_febe_buBrowserHistory");
  300.     var historyService = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService);
  301.     if(!historyService.hasHistoryEntries){
  302.         if(d.checked == true){tmp += d.label + "\n";}
  303.         d.checked = false;
  304.         d.setAttribute("disabled",true);
  305.         var prefName = "extensions.febe.buBrowserHistory";
  306.         febePrefs.setBoolPref(prefName,false);
  307.     }else{
  308.         d.setAttribute("disabled",false);
  309.     }//if
  310.     
  311.     // Check formhistory.dat
  312.     var d = document.getElementById("extensions_febe_buFormFillHistory");
  313.     var dbFile = febeProfDir.clone();
  314.     dbFile.append("formhistory.sqlite");
  315.  
  316.     var storageService = Cc["@mozilla.org/storage/service;1"].getService(Ci.mozIStorageService);
  317.     var db = storageService.openDatabase(dbFile);
  318.     var sQuery = "SELECT * FROM moz_formhistory";
  319.     var stmt = db.createStatement(sQuery);
  320.     if(!stmt.executeStep()){
  321.         if(d.checked == true){tmp += d.label + "\n";}
  322.         d.checked = false;
  323.         d.setAttribute("disabled",true);
  324.         var prefName = "extensions.febe.buFormFillHistory";
  325.         febePrefs.setBoolPref(prefName,false);
  326.     }else{
  327.         d.setAttribute("disabled",false);
  328.     }//if
  329.     
  330.     // Check permissions
  331.     var d = document.getElementById("extensions_febe_buPermissions");
  332.     var dbFile = febeProfDir.clone();
  333.     dbFile.append("permissions.sqlite");
  334.  
  335.     var storageService = Cc["@mozilla.org/storage/service;1"].getService(Ci.mozIStorageService);
  336.     var db = storageService.openDatabase(dbFile);
  337.     var sQuery = "SELECT * FROM moz_hosts";
  338.     var stmt = db.createStatement(sQuery);
  339.     if(!stmt.executeStep()){
  340.         if(d.checked == true){tmp += d.label + "\n";}
  341.         d.checked = false;
  342.         d.setAttribute("disabled",true);
  343.         var prefName = "extensions.febe.buPermissions";
  344.         febePrefs.setBoolPref(prefName,false);
  345.     }else{
  346.         d.setAttribute("disabled",false);
  347.     }//if
  348.     
  349.     // Check user-defined backups
  350.     var d = document.getElementById("extensions_febe_buUDBu");
  351.     if(febeUDBuInit() == false){
  352.         if(d.checked == true){tmp += d.label + "\n";}
  353.         d.checked = false;
  354.         d.setAttribute("disabled",true);
  355.         var prefName = "extensions.febe.buUDBu";
  356.         febePrefs.setBoolPref(prefName,false);
  357.     }else{
  358.         d.setAttribute("disabled",false);
  359.     }//if
  360.     
  361.     febeResultsFormat();
  362.     
  363.     // Display message
  364.     if(febex == true){return;}    // Display msg only once
  365.     febex = true;
  366.     if(tmp.length != 0){
  367.         var style = "<style>color: red; font-weight: bold; font-size: 15px;</style>";
  368.         tmp = style+febeMsg[184]+"\n\n"+tmp;
  369.         febeAlert(tmp);
  370.     }//if
  371. }//febeOptionsCheck()
  372.  
  373. function febeProfileWizard(){
  374.     var wizard = "chrome://mozapps/content/profile/createProfileWizard.xul";
  375.     window.open(wizard, "FEBE Help", "chrome,alwaysRaised,centerscreen,resizable");
  376. }//febeProfileWizard()
  377.  
  378. function febeTimestampDirCheck(event){
  379.     var selected = document.getElementById("febeTimestampFormatID").selectedItem.value;
  380.     var current = febePrefs.getCharPref("extensions.febe.timestamp.format");
  381.     if(current == selected){return true;}
  382.     if(!febeGetBDD()){return false;}        // Get backup destination directory
  383.  
  384.     var tags = ["ISO8601","European"];
  385.     var masks = [/^FEBE \d\d\d\d \d\d\.\d\d \d\d\.\d\d\.\d\d$/,/^FEBE \d\d\d\d \d\d-\d\d \d\d\.\d\d\.\d\d$/];
  386.     var which = document.getElementById("febeTimestampFormatID").selectedIndex;
  387.     var mask = masks[which];
  388.     var dirArray = {};
  389.     var numDirsToRename = 0;
  390.     var buDirRoot = febeBuDesDir.clone();
  391.     var entries = buDirRoot.directoryEntries;
  392.     
  393.     // Count the number of directories that need to be renamed
  394.     while(entries.hasMoreElements()){
  395.         var entry = entries.getNext();
  396.         entry.QueryInterface(Ci.nsIFile);
  397.         var dirName = entry.leafName;
  398.         if(!entry.isDirectory()){continue;}
  399.         if(!dirName.match(mask)){continue;}
  400.         numDirsToRename++;
  401.         
  402.         dirArray[dirName] = febeNewDirName(which,dirName);
  403.     }//while
  404.     if(numDirsToRename == 0){return true;}
  405.     
  406.     var newformat,oldformat;
  407.     switch(which){
  408.         case 0:    
  409.             oldformat = tags[1];
  410.             newformat = tags[0];
  411.             break;
  412.         case 1:    
  413.             oldformat = tags[0];
  414.             newformat = tags[1];
  415.             break;
  416.     }//switch
  417.     var tmp = febeMsg[204].replace("%NUMDIR%",numDirsToRename);
  418.     tmp = tmp.replace("%FORMT%",oldformat)+"\n";
  419.     tmp += febeMsg[205].replace("%NEWFORMAT%",newformat)+"\n\n"+febeMsg[41];
  420.     tmp="<style>color: red; font-weight: bold; font-size: 15px;</style>"+tmp;
  421.     if(!febeConfirm(tmp)){
  422.         switch(which){ // Switch it back to where it was
  423.         case 0:    
  424.             document.getElementById("febeTimestampFormatID").selectedIndex = 1;
  425.             break;
  426.         case 1:    
  427.             document.getElementById("febeTimestampFormatID").selectedIndex = 0;
  428.             break;
  429.     }//switch
  430.         febePrefs.setCharPref("extensions.febe.timestamp.format",current);
  431.         febeAlert(febeMsg[206]);
  432.         return false;
  433.     }//if
  434.     
  435.     // Rename the directories
  436.     for(var i in dirArray){
  437.         var rnDir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
  438.         rnDir.initWithPath(buDirRoot.path);
  439.         rnDir.append(i);
  440.         var filespec = Cc["@mozilla.org/filespec;1"].createInstance(Ci.nsIFileSpec);
  441.         filespec.nativePath = rnDir.path;
  442.         filespec.rename(dirArray[i]);
  443.     }//for
  444.     tmp = febeMsg[207].replace("%NUMDIR%",numDirsToRename);
  445.     tmp = tmp.replace("%NEWFORMAT%",newformat);
  446.     febeAlert(tmp);
  447.     febePrefs.setCharPref("extensions.febe.timestamp.format",selected)
  448. }//febeTimestampDirCheck()
  449.  
  450. function febeClearBuInProgressFlag(){
  451.     febePrefs.setBoolPref("extensions.febe.backupInProgress",false);
  452.     document.getElementById("febeclearbuinprogresstbtn").disabled = true;
  453. }//febeClearBuInProgressFlag()
  454.  
  455. function febeDisplayOnlineRestoreMenu(){
  456.   // Enable/disable online restore popups
  457.     var bool = febePrefs.getBoolPref("extensions.febe.boxnet.enabled");
  458.     var d = document.getElementById("febe_tlbr_restorePopups_online");
  459.     if(d){d.setAttribute("hidden",!bool);}
  460.     var d = document.getElementById("febe_tools_menu_restorePopups_online");
  461.     if(d){d.setAttribute("hidden",!bool);}
  462.     var d = document.getElementById("febe_tools_menu_upload");
  463.     if(d){d.setAttribute("hidden",!bool);}
  464.     var d = document.getElementById("febe_tlbr_bn_upload");
  465.     if(d){d.setAttribute("hidden",!bool);}
  466.     return true;
  467. }//febeDisplayOnlineRestoreMenu()
  468.  
  469. function febeResultsFormat(){
  470.     var bool = febePrefs.getBoolPref("extensions.febe.displayresultspage");
  471.     var d = document.getElementById("dispResultsFormat");
  472.     d.setAttribute("hidden",!bool);
  473. }//febeResultsFormat()
  474.  
  475. function febeGetNextBackup(){
  476.     var prefName = "extensions.febe.schedule.description";
  477.     var febeNB = febeGetUnicharPref(prefName);
  478.     var d = document.getElementById("nextbackupdate");
  479.     febeSetMsgs();
  480.     febeSetIsScheduled();
  481.     if(febeIsScheduled == true){
  482.         var tmp = febeLocalizedDate(febeNB);
  483.     }else{
  484.         var tmp = febeMsg[113];
  485.     }//if
  486.     d.value = tmp;
  487.     return true;
  488. }//febeGetNextBackup()
  489.  
  490. function febeSchedulePrompts(){
  491.   // Enable/disable prompts
  492.     var d1 = document.getElementById("backupOnStartup_id");
  493.     var d2 = document.getElementById("backupOnStartupPrompt_id");
  494.     d2.disabled = !d1.checked;
  495.     
  496.     var d1 = document.getElementById("backupOnShutdown_id");
  497.     var d2 = document.getElementById("backupOnShutdownPrompt_id");
  498.     d2.disabled = !d1.checked;
  499.     return true;
  500. }//febeSchedulePrompts()
  501.  
  502. function febeLoadFxPath(){
  503.     var prefName = "extensions.febe.FxExecutablePath";
  504.     if(febePrefs.prefHasUserValue(prefName)){return true;}
  505.     var app = febeGetEnvironmentVariableValue("MOZ_CRASHREPORTER_RESTART_ARG_0");
  506.     document.getElementById("fullFxPathID").value = app;
  507.     if(febePlatform == 3 || app == ""){    // Disable "Verify" button on Mac (bug 322865)
  508.         var d = document.getElementById("verifyFxPathID");
  509.         d.setAttribute("disabled","true");
  510.     }//if
  511. }//febeLoadFxPath()
  512.  
  513. function febeCheckFxPath(){
  514.     var fxPath = document.getElementById("fullFxPathID").value
  515.     if(fxPath == ""){ return false;}
  516.     var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
  517.     file.initWithPath(fxPath);
  518.     if(!file.exists()){
  519.         var tmp = febeMsg[299].replace(/%EXECUTABLE%/,fxPath);
  520.         febeAlert(tmp);
  521.         return false;
  522.     }//if
  523.     if(!file.isExecutable() && febePlatform != 3){
  524.         var tmp = febeMsg[300].replace(/%EXECUTABLE%/,fxPath);
  525.         febeAlert(tmp);
  526.         return false;
  527.     }//if
  528.     var prefName = "extensions.febe.FxExecutablePath";
  529.     febeSetUnicharPref(prefName,file.path);
  530.     var tmp = febeMsg[302];
  531.     febeAlert(tmp);
  532.     return true;
  533. }//febeCheckFxPath()
  534.  
  535. function febeBrowseForFirefox(){
  536.     var d = document.getElementById("fullFxPathID");
  537.     var fxPath = d.value;
  538.  
  539.   // Select firefox executable
  540.     const nsIFilePicker = Ci.nsIFilePicker;
  541.     var fp = Cc["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  542.     fp.init(window, febeMsg[301], nsIFilePicker.modeOpen);
  543.     fp.appendFilters(nsIFilePicker.filterApps);
  544.     fp.defaultString = "firefox";
  545.     
  546.     // Set the start directory 
  547.     var aDir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
  548.     var startDir;
  549.     if(fxPath != ""){
  550.         aDir.initWithPath(fxPath);
  551.         startDir = aDir.parent;
  552.     }else{
  553.         startDir = Cc["@mozilla.org/file/directory_service;1"]
  554.                 .getService(Ci.nsIProperties)
  555.                 .get("CurProcD", Ci.nsILocalFile);
  556.     }//if
  557.     fp.displayDirectory = startDir;
  558.  
  559.     var rv = fp.show();
  560.     if (rv == nsIFilePicker.returnOK){
  561.         d.value = fp.file.path;
  562.         return true;
  563.     }//if
  564.     return false;
  565. }//febeBrowseForFirefox()